-- 定义脚本参数
local stock_key = KEYS[1]
local free_index_key = KEYS[2]

-- 获取库存
local current_inventory = tonumber(redis.call('GET',stock_key) or 0)

-- 尝试消耗库存
if current_inventory < 1 then
    -- 库存不够了，返回-1，代表分配空场号失败
    return -1 -- 失败
end

-- 获取空闲场地索引
local free_court_index = redis.call("SRANDMEMBER", free_index_key)

if not free_court_index then
    -- 没有空闲的场号
    return -1 -- 失败
end

-- 将该空闲场号从缓存中删除
redis.call("SREM", free_index_key, free_court_index)

-- 更新库存
redis.call('DECRBY', stock_key, 1)

-- 返回分配的场地索引
return tonumber(free_court_index)